/**
* Copyrights 2011 Michal Saman, m.saman@designplus.cz.
* This source code is release under the Apache License 2.0.
* http://www.apache.org/licenses/LICENSE-2.0
*
* @file	 queue.h
* @brief Interface for circular queue operations (inserting, creating, deleting)
*/
#ifndef QUEUE_H
#define QUEUE_H

#include <env.h>
#include <stdint.h>

typedef struct queue {
	type_t*			item;
	struct queue*	next;
} queue_t;

extern bool queue_insert(type_t* item, queue_t** queue);
extern bool queue_delete(type_t* item, queue_t** queue);
extern type_t queue_lookup(type_t* item, queue_t* queue);
extern type_t queue_pop(queue_t** queue);
extern uint32_t queue_count(queue_t* queue);
extern bool queue_move(queue_t** sq, queue_t** dq);

#endif
